package th.retrofit.lib;

/**
 * https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/
 * 给你一个整数数组 nums ，其中元素已经按 升序 排列，请你将其转换为一棵 高度平衡 二叉搜索树。
 *
 * 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
 */
public class Solution108 {

    public TreeNode sortedArrayToBST(int[] nums) {
        return sortedArrayToBST(nums, 0, nums.length - 1);
    }

    public TreeNode sortedArrayToBST(int[] nums, int start, int end) {
        if (start > end) return null;
        int middle = (start + end) / 2;
        TreeNode cur = new TreeNode(nums[middle]);
        cur.left = sortedArrayToBST(nums, start, middle - 1);
        cur.right = sortedArrayToBST(nums, middle + 1, end);
        return cur;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{-10,-3,0,5,9};
        TreeNode root = new Solution108().sortedArrayToBST(arr);
        System.out.println(root);
    }


}
